<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var arr = [
            { id: 1, name: 'jack' },
            { id: 2, name: 'jack2' },
            { id: 2, name: 'jack' },
            { id: 4, name: 'jack3' },
        ]

        // 1- for(var i=0;i<arr.length;i++){
        //     console.log(arr[i])
        // }

        // 2- for(var k of  arr){
        //     console.log(k)
        // }

        // 3- arr.forEach((item, index) => {
        //     console.log(item, index)

        // })

        //  4-  filter   ====循环有返回值===返回 新数组  【返回一个满足条件的新数组】
        // var newArr=arr.filter((item,index)=>{
        //     console.log(item, index,888)
        //     return item.id==1
        // })
        // console.log(newArr,44444)

        /* 5- findIndex  ====循环有返回值==返回索引   【返回的是满足条件的索引====满足条件就结束循环=== 没有找到就返回-1】 
        */
        // var  index=arr.findIndex((item,index)=>{
        //     return true
        // })
        // console.log(index,888888)
        // var  index=arr.findIndex((item,index)=>{
        //     return item.id==5
        // })
        // console.log(index,55555)

        /* 6- map  循环有返回值====【按照条件返回===要什么数据就可以返回什么数据===返回格式是一个数组】 */
        // var newArr=arr.map((item,index)=>{
        //     return {id:item.id,index}
        // })
        // console.log(newArr,66666)

        // var newArr=arr.map((item,index)=>{
        //     return item.id>2
        // })
        // console.log(newArr,66666)  //  [false, false, true, true] 66666

        /* 7= find   【有返回值 满足条件就立马结束循环===返回的是满足条件的这一项 】 */
        // var newArr = arr.find((item, index) => {
        //     return true
        // })
        // console.log(newArr, 77777)  //  {id: 1, name: "jack"} 77777

        // var newArr = arr.find((item, index) => {
        //     return item.id==3
        // })
        // console.log(newArr, 77777) //  {id: 3, name: "jack"} 77777

        /* 8-some 【有返回值,返回的是bool值=== 满足条件就立马结束循环】 */
        // var newArr = arr.some((item, index) => {
        //     return true
        // })
        // console.log(newArr, 88888)  //   true

        // var newArr = arr.some((item, index) => {
        //     return item.id==2
        // })
        // console.log(newArr, 88888)  //   true


        /* 9-reduce  一般可以用于求和  reduce((total【循环后的返回值，即每一项叠加之和】,num【每一项】)=>{},第一个参数的初始值) */
        var numbers = [1, 2, 3, 4];
        var sum = numbers.reduce((total, num) => {
            console.log(total, num, 9999)
            return total + num
        }, 0)

        console.log(sum)//  10

    </script>
</body>

</html>